package com.blkj.iam.system.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.blkj.iam.common.base.BaseEntity;
import com.blkj.iam.system.model.vo.ShowUserInfoVO;
import lombok.Getter;
import lombok.Setter;

/**
 * 用户实体
 */
@TableName("sys_user")
@Getter
@Setter
public class User extends BaseEntity {

    /**
     * 用户名
     */
    private String username;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 性别(1-男 2-女 0-保密)
     */
    private Integer gender;

    /**
     * 密码
     */
    private String password;

    /**
     * 原始密码
     */
    private String rawPass;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门名称
     */
    @TableField(exist = false)
    private String deptName;

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 用户头像
     */
    private String avatar;

    /**
     * 联系方式
     */
    private String mobile;

    /**
     * 状态(1-正常 0-禁用)
     */
    private Integer status;

    /**
     * 用户邮箱
     */
    private String email;

    /**
     * 创建人 ID
     */
    private Long createBy;

    /**
     * 更新人 ID
     */
    private Long updateBy;

    /**
     * 是否删除(0-否 1-是)
     */
    private Integer isDeleted;

    /**
     * 微信 OpenID
     */
    private String openid;

    /**
     * 用户类型: 0-平台 1-监管 2-贸易 3-供箱单位 4-担保商 5-供应商 6-贸易方 7-(蒙）承运单位 8-（中）承运单位
     */
    private Integer userType;

    /**
     * 人员类型（ 0:后台用户  1：磅单登记人 2：入场确认人 3：正面吊司机 4：拉运司机 （掏箱运输） 5 ：叉车司机 6：出场确认人 7：报关人员 ）
     */
    private Integer personType;

    /**
     * 用户类型：0-该机构主要用户，1-该机构额外用户
     */
    private Integer mainType;

    /**
     * 雪花ID
     */
    private String idStr;

    /**
     * 创建者
     */
    private String createUser;

    /**
     * 修改者
     */
    private String updateUser;

    /**
     * 备注
     */
    private String remark;

    /**
     * 联系人
     */
    private String linkMan;


    // 转换为
    public static ShowUserInfoVO toShowUserInfo(User sysUser) {
        ShowUserInfoVO showUserInfo = new ShowUserInfoVO();
        showUserInfo.setId(sysUser.getId().toString());
        showUserInfo.setDepartId(sysUser.getDeptId().toString());
        showUserInfo.setUsername(sysUser.getUsername());
        showUserInfo.setRealname(sysUser.getNickname());
        showUserInfo.setAvatar(sysUser.getAvatar());
        showUserInfo.setSex(sysUser.getGender());
        showUserInfo.setEmail(sysUser.getEmail());
        showUserInfo.setPhone(sysUser.getMobile());
        showUserInfo.setLoginTenantId(sysUser.getTenantId().toString());
        showUserInfo.setStatus(sysUser.getStatus());
        showUserInfo.setDelFlag(sysUser.getIsDeleted());
        showUserInfo.setCreateBy(sysUser.getCreateUser());
        showUserInfo.setUpdateBy(sysUser.getUpdateUser());
        showUserInfo.setCreateTime(sysUser.getCreateTime());
        showUserInfo.setUpdateTime(sysUser.getUpdateTime());
        showUserInfo.setDepartId(sysUser.getDeptId().toString());
        showUserInfo.setUserType(sysUser.getUserType());
        showUserInfo.setPersonType(sysUser.getPersonType());
        showUserInfo.setMainType(sysUser.getMainType());
        showUserInfo.setRemark(sysUser.getRemark());
        showUserInfo.setMwPass(sysUser.getRawPass());
        showUserInfo.setLinkMan(sysUser.getLinkMan());
        showUserInfo.setIdStr(sysUser.getIdStr());
        return showUserInfo;
    }
}